package com.opencvjava;

import com.opencvjava.code.Omr1;
import com.opencvjava.code.sightReader.SightReader;
import com.opencvjava.dtk.DtkTest;
import com.opencvjava.dtk.DtkTest3;
import com.opencvjava.lessons.core.L1_IntroductionToOpenCV;
import com.opencvjava.lessons.core.L2_CoreModule;
import com.opencvjava.lessons.core.L3_Scan_Lookup_TimeMeasure;
import com.opencvjava.lessons.core.L4_MaskOperation;
import com.opencvjava.lessons.core.L5_OperationsWithImages;
import com.opencvjava.lessons.core.L6_AddingTwoImages;
import com.opencvjava.lessons.core.L7_ContrastAndBrightness;
import com.opencvjava.lessons.core.L8_DiscreteFourierTransform;
import com.opencvjava.lessons.feature2d.L1_HarrisCornerDetector;
import com.opencvjava.lessons.feature2d.L2_ShiTomasiCornerDetector;
import com.opencvjava.lessons.highgui.L1_Trackbar;
import com.opencvjava.lessons.imgproc.*;
import com.opencvjava.lessons2.BinaryDemo;
import com.opencvjava.lessons2.FaceDemo;
import com.opencvjava.lessons2.HistBackProjectDemo;
import com.opencvjava.lessons2.TemplateMatchDemo;
import com.opencvjava.lessons2.WaterShedsDemo;
import com.opencvjava.piano.Extract2;
import com.opencvjava.piano.Extract3;
import com.opencvjava.piano.Extract4;
import com.opencvjava.piano.Extract5;
import com.opencvjava.practise.Dot;
import com.opencvjava.practise.MarkDifference;
import com.opencvjava.practise.Test1;
import com.opencvjava.practise.Test2;
import com.opencvjava.practise.Txm;
import com.opencvjava.practise.Txm2;
import com.opencvjava.zero.ZeroTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class OpencvJavaApplication implements CommandLineRunner {

    @Value("${project.opencv.dll}")
    String opencvDll;

    @Override
    public void run(String... args) throws Exception {
        System.load(opencvDll);
//        l1_IntroductionToOpenCV.test();
//        l2_coreModule.test();
//        l3_scan_lookup_timeMeasure.test();
//        l4_maskOperation.test();
//        l5_operationsWithImages.test();
//        l6_addingTwoImages.test();
//        l7_contrastAndBrightness.test();
//        l8_discreteFourierTransform.test();
//        l1_basicDrawing.test();
//        l2_randomGeneratorAndText.test();
//        l3_smoothingImages.test();
//        l4_erodingAndDilating.test();
//        l5_moreMorphology.test();
//        l6_hitOrMiss.test();
//        l7_morphologicalLines.test();
//        l8_imagePyramids.test();
//        l9_thresholdingUsingInRange.test();
//        l10_sobelScharr.test();
//        l11_laplaceOprator.test();
//        l12_canny.test();
//        l13_houghLine.test();
//        l14_houghCircle.test();
//        l15_remap.test();
//        l16_affine.test();
//        l17_histogramEqualization.test();
//        l18_histogramCalc.test();
//        l19_histogramComparison.test();
//        histBackProjectDemo.test();
//        templateMatchDemo.test();
//        binaryDemo.test();
//        waterShedsDemo.test1();
//        faceDemo.test();
//        l20_convexHull.test();
//        l1_trackbar.test();
//        l1_harrisCornerDetector.test();
//        l2_shiTomasiCornerDetector.test();
//        dtkTest.test();
//        dtkTest3.test();
//        markDifference.test1();
//        dot.test();
//        test1.test();
//        test2.test();
//        txm.test();
//        txm2.test();
//        extract3.test();
//        extract2.test();
//        extract4.test();
//        extract5.test();
//        sightReader.test();
//        omr1.test();
        zeroTest.test();
    }

    @Autowired
    ZeroTest zeroTest;
    @Autowired
    Omr1 omr1;
    @Autowired
    SightReader sightReader;
    @Autowired
    Extract5 extract5;
    @Autowired
    Extract4 extract4;
    @Autowired
    Extract2 extract2;
    @Autowired
    Extract3 extract3;
    @Autowired
    Txm2 txm2;
    @Autowired
    Txm txm;
    @Autowired
    Test2 test2;
    @Autowired
    Test1 test1;
    @Autowired
    Dot dot;
    @Autowired
    MarkDifference markDifference;
    @Autowired
    DtkTest3 dtkTest3;
    @Autowired
    DtkTest dtkTest;
    @Autowired
    L2_ShiTomasiCornerDetector l2_shiTomasiCornerDetector;
    @Autowired
    L1_HarrisCornerDetector l1_harrisCornerDetector;
    @Autowired
    L1_Trackbar l1_trackbar;
    @Autowired
    L20_ConvexHull l20_convexHull;
    @Autowired
    FaceDemo faceDemo;
    @Autowired
    WaterShedsDemo waterShedsDemo;
    @Autowired
    BinaryDemo binaryDemo;
    @Autowired
    TemplateMatchDemo templateMatchDemo;
    @Autowired
    HistBackProjectDemo histBackProjectDemo;
    @Autowired
    L19_HistogramComparison l19_histogramComparison;
    @Autowired
    L18_HistogramCalc l18_histogramCalc;
    @Autowired
    L17_HistogramEqualization l17_histogramEqualization;
    @Autowired
    L16_Affine l16_affine;
    @Autowired
    L15_Remap l15_remap;
    @Autowired
    L14_HoughCircle l14_houghCircle;
    @Autowired
    L13_HoughLine l13_houghLine;
    @Autowired
    L12_Canny l12_canny;
    @Autowired
    L11_LaplaceOprator l11_laplaceOprator;
    @Autowired
    L10_SobelScharr l10_sobelScharr;
    @Autowired
    L9_ThresholdingUsingInRange l9_thresholdingUsingInRange;
    @Autowired
    L8_ImagePyramids l8_imagePyramids;
    @Autowired
    L7_MorphologicalLines l7_morphologicalLines;
    @Autowired
    L6_HitOrMiss l6_hitOrMiss;
    @Autowired
    L5_MoreMorphology l5_moreMorphology;
    @Autowired
    L4_ErodingAndDilating l4_erodingAndDilating;
    @Autowired
    L3_SmoothingImages l3_smoothingImages;
    @Autowired
    L2_RandomGeneratorAndText l2_randomGeneratorAndText;
    @Autowired
    L1_BasicDrawing l1_basicDrawing;
    @Autowired
    L8_DiscreteFourierTransform l8_discreteFourierTransform;
    @Autowired
    L7_ContrastAndBrightness l7_contrastAndBrightness;
    @Autowired
    L6_AddingTwoImages l6_addingTwoImages;
    @Autowired
    L5_OperationsWithImages l5_operationsWithImages;
    @Autowired
    L4_MaskOperation l4_maskOperation;
    @Autowired
    L3_Scan_Lookup_TimeMeasure l3_scan_lookup_timeMeasure;
    @Autowired
    L2_CoreModule l2_coreModule;
    @Autowired
    L1_IntroductionToOpenCV l1_IntroductionToOpenCV;

    public static void main(String[] args) {
        System.setProperty("java.awt.headless", "false");
        SpringApplication.run(OpencvJavaApplication.class, args);
    }
}

